const express = require('express');
const fs = require('fs');
const app = express();
const path = require('path');
// 开启服务
app.listen(4000, () => console.log('服务器玩命启动中'));
// 监听请求

// 获得书籍
app.get('/api/getbook', (req, res) => {
    // res.writeHead(200,{
    //     'Content-Type':'text/json;charset=utf-8'
    // })
    fs.readFile(path.join(__dirname, './books.json'), 'utf-8', (err, data) => {
        if (err) {
            console.log('请求失败');
        }
        res.end(data);

    })
});

// 删除书籍
app.get('/api/delbook', (req, res) => {
    fs.readFile(path.join(__dirname, './books.json'), 'utf-8', (err, data) => {
        if (err) console.log('读取错误');
        // 创建url对象
        let url = new URL(req.url, 'http://localhost:4000');

        // 常规方法
        // 将返回的JSON字符串转换为js对象
        // let result = JSON.parse(data);
        // // 得到请求id
        // let id = url.search.match(/\d/g).join('');
        // // 删除给定的书籍
        // let res_data = result.filter(item=>item.id != id);
        // // 写入文件
        // fs.writeFile(path.join(__dirname,'./books.json'),JSON.stringify(res_data),err=>{
        //     if(err) console.log('写入失败');
        //     console.log('写入成功');

        // })

        // express提供的新方法
        let result = JSON.parse(data);
        // 删除给定的书籍
        let res_data = result.filter(item => item.id != req.query.id)
        fs.writeFile(path.join(__dirname, './books.json'), JSON.stringify(res_data), err => {
            if (err) console.log('删除失败');
            console.log('删除成功');

        })

    })
});
// 添加书籍
app.use(express.urlencoded({ extended: false }));
app.post('/api/addbook', (req, res) => {
    // console.log(req.body);
    fs.readFile(path.join(__dirname, './books.json'), 'utf-8', (err, data) => {
        if(err)console.log('读取错误');
        
        let req_body = JSON.parse(JSON.stringify(req.body));
        let result = JSON.parse(data);
        let id = result.push(req_body);
        result[id-1].id = id;
        fs.writeFile(path.join(__dirname, './books.json'),JSON.stringify(result),err=>{
        })
    })
    res.send('你的请求收到了');
})


